Macro programming for resources

ABSTRACT

A system and a method are disclosed for generating, storing, retrieving, and utilizing a search macro or shortcut link to a resource, such as a web site that provides access to an information database. The system may load a page into an application from the resource. The resource may have a Uniform Resource Identifier, and the page may have a search field that causes the application to generate a message when activated. The system may read the Uniform Resource Identifier insert a placeholder into the search field, and activate the search field, which causes the application to generate a message. The system may read the message and parse the message to isolate a search string containing the placeholder. The system may store the search string in a data structure, and may also store the Uniform Resource Identifier and associate it with the search string in the data structure. The system may further retrieve the search string, replace the placeholder with a search term, and generate a message as a function of the search string and the search term.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention is directed to a method for utilizing adistributed computing system. In particular, a system and method aredisclosed for creating shortcuts to accessing resources in a distributedcomputing system.

2. Description of the Related Art

The Internet is a vast computer network consisting of many smallernetworks that span the world. A network provides a distributedcommunication system of computers that are interconnected by variouselectronic communication links and communication computer softwareprotocols. Because of the Internet's distributed and open networkarchitecture, it is possible to transfer data from one computer to anyother computer worldwide. In 1991, the World-Wide-Web (WWW or Web)revolutionized the way information is managed and distributed.

Client side browsers, such as Mozilla Firefox, Apple Safari, and/orMicrosoft Internet Explorer provide graphical user interface (GUI) basedclient applications that implement the client side portion of theHypertext Transfer Protocol (HTTP), which is designed to run primarilyover a Transmission Control Protocol/Internet Protocol (TCP/IP)connection. One format for information transfer is to create documentsusing Hypertext Markup Language (HTML). HTML pages are made up ofstandard text as well as formatting codes that indicate how the pageshould be displayed. The client side browser reads these codes in orderto display the page.

A web page may be static and require no variables to display informationor link to other predetermined web pages. A web page is dynamic whenarguments are passed which are either hidden in the web page or enteredfrom a client browser to supply the necessary inputs displayed on theweb page.

A Uniform Resource Identifier (URI) is a compact string of charactersfor identifying an abstract or physical resource, and each name andaddresses that refer to objects on the Internet may be reduced to a URI.One type of a URI is a uniform resource locator (URL), which is theaddress of a file accessible on the Internet. A URL contains the name ofthe protocol required to access the resource, a domain name, or an IPaddress that identifies a specific computer on the Internet, and ahierarchical description of a file location on the computer. Inaddition, the an optional ending of a URL may be a “?” followed by aquery string having name/value pairs for parameters (e.g.“?size=small&quantity=3”) or a “#” followed by a fragment identifierindicating a particular position within the specified document.

The URI “http://www.example.com:80/index.html#appendix” is theconcatenation of several components where “http:” is the scheme orprotocol, “//www.example.com” is the fully-qualified domain name having“www” as the host of the domain name “example.com”, “:80” is the portconnection for the HTTP server request, “index.html” is the filenamelocated on the server, “#appendix” is the identifier to display afragment of the HTML file called “index”. The URL“http://www.example.com” also retrieves an HTML file called “index.html”on an HTTP server called “www.example.com”. By default, when either aport or filename is omitted upon accessing an HTTP server via a URL, theclient browser interprets the request by connecting via port 80, andretrieving the HTML file called “index.html”.

In the current search environment, a user can access a search engine,such as Google™ or Yahoo!™ and perform a search. However, each time theuser wishes to access a search engine, the user must first navigate tothe “home page” of that search engine, enter search terms into a form onthat home page, submit that form, and then wait for the results.Similarly, a variety of other resources, such as WebMD™, MapQuest™,LocalLive™, the U.S. Patent Office web site, and the like, provide avariety of different kinds of information that can be located bynavigating to a search page and entering search terms. (The term“resource” as used herein refers to any computer system that isaccessible via a network and that provides information in response tothe submission of search terms). Some of these resources, such as theU.S. Patent Office web site, contain a variety of different searchpages, which are located several levels below the home page.

Where a user of one or more resources is an amateur or professionalresearcher, such as an inventor or a patent searcher, the need toconstantly navigate to a search page for each resource can be timeconsuming and frustrating. It would be desirable to provide a system anda method that allows an information seeker to create macros that allowfor the rapid searching of a resource without manually navigating abrowser to the resources search page. It would be further desirable toallow the information seeker to search one or more additional resourceswithout either re-entering the search terms or manually navigating tothe search pages of the additional resources.

Attempts have been made to assist inexperienced users by allocatinghumans to answer users' questions via a variety of mechanisms includingvia e-mail, via information posted at websites, and via libraryreference desks that are connected to users via “chat” sessions.However, there are many limitations imposed by these and other offeringsincluding having limited pools of “experts”, having latency indelivering results, having helpers who are not sufficientlyknowledgeable to provide optimal results, etc.

SUMMARY

A system and a method are disclosed for performing generating andstoring a search macro or shortcut link to a resource, such as a website that provides access to an information database. The system allowsfuture searches using the stored search macro associated with aresource. The system may load a page into an application by accessingthe resource. The resource may have a Uniform Resource Identifier, andthe page may have a search field that causes the application to generatea message when activated.

The system may read the Uniform Resource Identifier (URI), insert aplaceholder into the search field, and activate the search field, whichcauses the application to generate a message. The system may read themessage and parse the message to isolate a search string containing theplaceholder. The system may store the search string in a data structure,and may also store the Uniform Resource Identifier and associate it withthe search string in the data structure. This search string combinedwith the URI may be utilized to send future searches to the associatedresource.

These together with other aspects and advantages which will besubsequently apparent, reside in the details of construction andoperation as more fully hereinafter described and claimed, referencebeing had to the accompanying drawings forming a part hereof, whereinlike numerals refer to like parts throughout.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 a depicts a system architecture of a computer system;

FIG. 1 b depicts a system architecture of a distributed computer system;

FIG. 2 depicts an architecture of a computer system;

FIG. 3 depicts a first user GUI (graphical user interface);

FIG. 4 a is a flow chart for generating and storing a search macro;

FIG. 4 b is an exemplary flow chart illustrating generating and storinga search macro;

FIG. 5 illustrates a data structure;

FIG. 6 depicts a second user GUI (graphical user interface);

FIG. 7 is a flow chart for retrieving a search macro and generating aURL;

FIG. 8 is a system architecture for a human assisted search; and

FIG. 9 depicts a flowchart for automating access to a resource.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

The embodiments discussed herein relate to a method and apparatus formanaging computer files containing documents and images of documents. Inthe following detailed description, numerous specific details are setforth in order to provide a thorough understanding of the embodiments.It will be apparent to one of ordinary skill in the art, however, thatthese specific details need not be used to practice the embodiments. Inother instances, well-known structures, interfaces and processes havenot been shown in detail in order not to unnecessarily obscure thedescription.

A macro programming capability for resources provided by the system willbe illustrated in FIGS. 1 a and 1 b. A request may be a query orkeyword(s) submitted from an information seeker or user and may entail afully-formed question, sentence, keyword or search phrase, for example,the closing time of a particular restaurant, information pertaining to amedical illness, or any other type of query. The macro programmedresources may be used by a requestor for conducting a search and/or ahuman searcher conducting a search on behalf of the requester. Aprovider, a guide or paid searcher (PaidSearchers™) is a human searcherwho has registered to handle requests, who may be a professional, anamateur and/or volunteer searcher. A requester or an information seeker(InfoSeekers™) is a user or an entity submitting a request seekinginformation.

System Hardware

FIG. 1 a illustrates an exemplary embodiment of a computer system 110,120. In this disclosure, one or more client computers 110 communicatewith one or more server computers 120, however, as will be appreciatedby those of skill in the art, whether a given computer operates as aclient or a server depends predominantly on the configuration of thesoftware and/or firmware stored thereon. The preferred embodiment isimplemented on a personal computer, a workstation computer, a laptopcomputer, a palmtop computer, or a wireless terminal having computingcapabilities (such as a “cell phone” having a Windows CE or Palmoperating system). It will be apparent to those of ordinary skill in theart that other computer system architectures may also be employed.

In general, computer systems such as those illustrated by FIG. 1comprise a bus 101 for communicating information, a processor 102coupled with the bus 101 for processing information, main memory 103coupled with the bus 101 for storing information and instructions forthe processor 102, a read-only memory 104 coupled with the bus 101 forstoring static information and instructions for the processor 102, adisplay device 105 coupled with the bus 101 for displaying informationfor a computer user, an input device 106 coupled with the bus 101 forcommunicating information and command selections to the processor 102, amass storage interface 107 for communicating with a data storage device108 containing digital information, and a network interface 109 forcommunicating with a network 130.

The processor 102 may be any of a wide variety of general purposeprocessors or microprocessors such as the Pentium microprocessormanufactured by Intel Corporation, a Power PC manufactured by IBMCorporation, a SPARC processor manufactured by Sun corporation, or thelike. It will be apparent to those of ordinary skill in the art,however, that other varieties of processors may also be used in aparticular computer system.

The display device 105 may be a liquid crystal device (LCD), cathode raytube (CRT), plasma monitor, display screen, text-to-speech converter,printer, plotter, fax, television set, or audio player. Although theinput device is typically separate from the display device, they may becombined; for example: a display with an integrated touch screen, adisplay with an integrated keyboard, or a speech-recognition unitcombined with a text-to-speech converter or other suitable displaydevice.

The input device 106 may be any suitable device for the user to giveinput to client computer system 110, for example: a keyboard, a 10-keypad, a telephone key pad, a light pen or any pen pointing device, atouch screen, a button, a dial, a joystick, a steering wheel, a footpedal, a mouse, a trackball, an optical or magnetic recognition unitsuch as a bar code or magnetic swipe reader, a voice or speechrecognition unit, a remote control attached via cable or wireless linkto a game set, television, and/or cable box. A data glove, aneye-tracking device, or any MIDI device may also be used as part of theinput device 106. Although the input device is typically separate fromthe display device, they may be combined; for example: a display with anintegrated touch screen, a display with an integrated keyboard, or aspeech-recognition unit combined with a text-to-speech converter.

The mass storage interface 107 may allow the processor 102 access to thedigital information on the data storage device 108 via the bus 101. Themass storage interface 107 may be a universal serial bus (USB)interface, an integrated drive electronics (IDE) interface, a serialadvanced technology attachment (SATA), interface or the like, coupledwith the bus 101 for transferring information and instructions. The datastorage device 108 may be a conventional hard disk drive, a floppy diskdrive, a flash device (such as a “jump drive” or SD card), an opticaldrive such as compact disc (CD) drive, digital versatile disc (DVD)drive, HD DVD drive, Blue-Ray DVD drive, or another magnetic, solidstate, or optical data storage device, along with the associated medium(a floppy disk, a CD-ROM, a DVD, etc.).

The network interface 109 may be an IEEE 802.11 network interface cardfor communicating via Ethernet, a token ring, an AppleTalk, or awireless local area network such as those described by IEEE802.11(a)-(g). The network 130 may comprise a global network, such asthe Internet, one or more other wide area networks (WAN), a local areanetwork (LAN), wireless communication networks, a wireless local areanetwork (WLAN), satellite networks, Bluetooth networks, a synchronousoptical network (SONET), asynchronous transfer method (ATM) networks,integrated digital subscriber networks (ISDN), frame relay networks,proprietary networks such as provided by America Online, Inc., or othertypes of communications networks generally known to those skilled in theart. In the embodiment described herein, the network 130 is an EthernetLAN and the network interface 109 substantially conforms to a wired orwireless variant of IEEE 802.11.

In general, the processor 102 retrieves processing instructions and datafrom the data storage device 108 using mass storage interface 107 anddownloads this information into the random access memory 103 forexecution. The processor 102, then executes an instruction stream fromthe random access memory 103 or the read-only memory 104. Commandselections and information input at the input device 106 are used todirect the flow of instructions executed by the processor 102. Theresults of this processing execution are then displayed on the displaydevice 105.

The preferred embodiment is implemented as a software module, which maybe executed on a computer system such as the computer systems 110, 120in a conventional manner. Using well known techniques, the applicationsoftware of the preferred embodiment is stored on the data storagedevice 108 and subsequently loaded into and executed within the computersystems 110, 120. Once initiated, the software of the preferredembodiment operates in the manner described below. The processes andoperations performed by the computer systems 110, 120 include themanipulation of data bits by a local processing unit and/or remoteserver and the maintenance of these bits within data structures residentin one or more of the local or remote memory storage devices. These datastructures impose a physical organization upon the collection of databits stored within a memory storage device and represent electromagneticspectrum elements.

A process may generally be defined as being a sequence ofcomputer-executed steps leading to a desired result. These stepsgenerally require physical manipulations of physical quantities.Usually, though not necessarily, these quantities may take the form ofelectrical, magnetic, or optical signals capable of being stored,transferred, combined, compared, or otherwise manipulated. It isconventional for those skilled in the art to refer to these signals asbits or bytes (when they have binary logic levels), pixel values, works,values, elements, symbols, characters, terms, numbers, points, records,objects, images, files, directories, subdirectories, or the like. Itshould be kept in mind, however, that these and similar terms should beassociated with appropriate physical quantities for computer operations,and that these terms are merely conventional labels applied to physicalquantities that exist within and during operation of the computer.

It should also be understood that manipulations within the computer areoften referred to in terms such as adding, comparing, moving,positioning, placing, illuminating, removing, altering, etc., which areoften associated with manual operations performed by a human operator.The operations described herein are machine operations performed inconjunction with various input provided by a human operator or user thatinteracts with the computer. The machines used for performing theoperation of the present invention include local or remotegeneral-purpose digital computers or other similar computing devices.

In addition, it should be understood that the programs, processes,methods, etc. described herein are not related or limited to anyparticular computer or apparatus nor are they related or limited to anyparticular communication network architecture. Rather, various types ofgeneral-purpose machines may be used with program modules constructed inaccordance with the teachings described herein. Similarly, it may proveadvantageous to construct a specialized apparatus to perform the methodsteps described herein by way of dedicated computer systems in aspecific network architecture with hard-wired logic or programs storedin nonvolatile memory, such as read only memory.

Distributed System Configuration

FIG. 1 b illustrates an exemplary embodiment of a distributed computersystem 150 that may include client computers or any network accessapparatus 110 connected to server computers 120 via the network 130. Thenetwork 130 may use Internet communications protocols (IP) to allowclients 110 to communicate with servers 120. The network 130 may providean on-line service, an Internet service provider, a local area networkservice, a wide area network service, a cable television service, awireless data service, an intranet, a satellite service, or the like.

The client computers 110 may be any network access apparatus includinghand held devices, palmtop computers, personal digital assistants(PDAs), notebook, laptop, portable computers, desktop PCs, workstations,and/or larger/smaller computer systems, as generally described above. Itis noted that the network access apparatus 110 may have a variety offorms, including but not limited to, a general purpose computer, anetwork computer, an internet television, a set top box, a web-enabledtelephone, an internet appliance, a portable wireless device, a gameplayer, a video recorder, and/or an audio component, for example.

Each client 110 and server 120 may be similarly configured as client andserver computers, as described generally above. However, in manyinstances server sites 120 include many computers, perhaps connected bya separate private network. In fact, the network 130 may includehundreds of thousands of individual networks of computers. Although theclient computers 110 are shown separate from the server computers 120,it is understood that a single computer might perform the client andserver roles.

The clients 110 in the distributed computer system 150 may submit searchrequests via the network 130 in a manner similar to the search systemdisclosed in application Ser. No. 11/336,928, titled A SCALABLE SEARCHSYSTEM USING HUMAN SEARCHERS, inventor Scott A. Jones, filed Jan. 23,2006, in the United States Patent and Trademark Office, the disclosureof which is incorporated herein by reference. For example, when a userof client computer 110 a may submit a search request to the system 150requesting assistance in conducting a search pertaining to a particularsubject matter, in response to which a human searcher, guide or providermay execute a search using a macro programmed resource and deliversresults to the user.

Those skilled in the art will appreciate that the computer environment150 shown in FIG. 1 b is intended to be merely illustrative. Theembodiments may also be practiced in other computing environments. Forexample, the embodiments may be practiced in multiple processorenvironments wherein the client computer includes multiple processors.Moreover, the client computer need not include all of the input/outputdevices as discussed above and may also include additional devices.Those skilled in the art will appreciate that the embodiments may alsobe practiced via Intranets and more generally in distributedenvironments in which a client computer requests resources from a servercomputer.

During operation of the distributed system 150, users of the clients 110may desire to access information records stored by the servers 120 whileutilizing, for example, the Web. Furthermore, such server systems 120may also include one or more search engines having one or moredatabases. The records of information may be in the form of Web pages.The pages may be data records including as content plain textualinformation, or more complex digitally encoded multimedia content, suchas software programs, graphics, audio signals, videos, and so forth. Itshould be understood that although this description focuses on locatinginformation on the World-Wide-Web, the system may also be used forlocating information via other wide or local area networks (WANs andLANS), or information stored in a single computer using othercommunications protocols.

The clients 110 may execute Web browser programs, such as NetscapeNavigator or MSIE to locate the pages or records. The browser programsmay enable users to enter addresses of specific Web pages to beretrieved. Typically, the address of a Web page is specified as a URI ormore specifically as a URL. In addition, when a page has been retrieved,the browser programs may provide access to other pages or records by“clicking” on hyperlinks (or links) to previously retrieved Web pages.Such links may provide an automated way to enter the URL of anotherpage, and to retrieve that page.

Software and Data Components

Turning to FIG. 2, illustrative software and data components stored bythe data storage medium 108 and the main memory 103 are shown. Thecomponents may include a data structure 202, a graphical user interface(GUI) 204, a network driver 206, and a toolbar application 210. The GUI204 may have an associated GUI data structure or database (not shown)that stores the contents of each of the buttons (controls) and frames orfields. The entire contents of the GUI data structure can also beupdated when events occur at a server 120, such as when the usernavigates to a new web site.

The GUI 204 may store a browser application 208. For example, thebrowser application 208 may be any of the commercial browserapplications described above, or a custom web browser application. Thebrowser application 208 may generate a browser window 302, shown in FIG.3. The toolbar application 210 may be a plug-in for the browserapplication 208. For example, the toolbar application 210 may generatewidgets 316 and 318 that are included in the toolbar 306 of the browserwindow 302, as described in more detail below. Additionally, the toolbarapplication may contain an algorithm for creating search macros (orshortcuts) that allow the user to search resources without having tomanually navigate to the URL of each resource.

The data structure 202 may include information regarding the macros.Although the data structure is shown as being stored in main memory 103and/or data storage medium 108 of the client computer 110, in oneembodiment, the data structure 202 may be stored in a memory of theserver 120. In another embodiment, the data structure 202 is stored inthe memories of both the client computer 110 and the server computer120. Such an embodiment of the data structure 202 is illustrativelyshown in FIG. 5.

The toolbar application 210 and the browser application 208 maycommunicate with one another, for example, by inter-processcommunications, via shared memory locations, or by TCP or UDPconnections, as are well-known in the art. In order to communicate withserver applications on server computer 120, a network driver 206 may beemployed. For example, the network driver 206 may implement the TCP/IPinternet protocol, as well as Ethernet and/or other lower-layerprotocols. The toolbar application 210 may communicate with a firstserver 120 via the network driver 206. Furthermore, the browserapplication 208 may communicate with a second server 120 via the networkdriver 206.

For example, the first server 120 may be a server on which the user hasa personalized account, and on which the user has information regardingmacros stored. The second server 120 may be, for example, a resource,such as a search engine used in a search such as described in U.S.patent application Ser. No. 11/336,928. As shown, this configuration mayallow the user to retrieve information, such as a search macro, from thefirst server 120, load the search macro into the browser application208, and transmit the search macro to the second server 120 via thenetwork driver 206.

Macro Generation Graphical User Interface

As shown in FIG. 3, the browser application 208 generates a browserwindow 302 within the GUI 204. The browser window 302 may include a menubar 304, as would be familiar to one accustomed to using an Internet webbrowser application. Additionally, the browser window 302 may include atoolbar 306, an address frame 307, and a display area 308, also familiarto persons using Internet browsers. The toolbar 306 may include thetop-level widgets for a file menu, an edit menu, a view menu, and thelike. Those familiar with using windowing operating systems will befamiliar with the use of such a menu bar. The toolbar 306 may includewidgets that allow the user to move back to a previous web page, forwardto a next web page, to reload the current web page, and the like. Theaddress frame 307 may provide a location for the entry of a URL addressfor a website to which the user wishes to navigate. The display area 308may render the contents of the HTML or other source code contained atthe address specified by the URL in the address frame 307.

FIG. 3 shows an illustrative search site www.searcharoo.com rendered inthe display area 308. This search site includes a search frame 310 and asearch button 314. The search frame 310 provides a frame into which auser may type a list comprising one or more search terms for which theuser desires to gain additional information. In operation, once the userenters the search terms into the search frame 310, the user wouldactivate the search button 314. Upon activating the search button 314,the web server that hosts the site would return a web page containing alist of search results, which would be displayed in the display area308.

As explained above, for a user who conducts a large number of searches,especially a user that conducts searches using a variety of resources(web sites), a significant amount of time may be spent navigating fromone search site to another, locating search frames (i.e., frame 310) ateach site that may be buried deep within the site, and typing in thesearch terms. The more searches a user performs on different resources,the more significant this amount of time becomes. To decrease the amountof time spent “surfing” between sites, the toolbar application 210generates an Instasearch button or control 316, and an indicator 318.(The title “Instasearch” is merely illustrative, and intended only toshow that this button creates a macro for an “instant search.” The namegiven to the button 316 is not relevant to the claimed invention). Asdescribed in more detail below, the Instasearch button 316 allows theuser to create a search macro that will automatically send a properlyformatted search request to the currently selected web server, withoutthe need to navigate to the URI of the “search” page of said web server.

Macro Generation Algorithm

Turning to FIGS. 4 a and 4 b, flow charts for an illustrative algorithmto create and store a search macro is shown. The processor 102 entersthe algorithm at 402. At 404, the processor 102 determines whether a newweb page (URL) has been entered into frame 307, and loaded into displayarea 308. If not, then the processor waits at 404 until a new page isloaded.

If a new web page has been loaded, then at 406, the processor reads theURI and HTML of the web page. For example, the processor may determinethe URL address of the web page, the path to the currently selecteddirectory of the currently active web server 120, and a query stringincluded in the URL, if one exists. Further, the processor may read thesource code of the current web page, and determine the location of theframe 310 therein. Further, the processor may determine the actionindicated in the source code to be carried out in response to theactivation of the search button 314. For example, the processor maydetermine the format of an HTTP GET request, or an HTTP POST commandgenerated by the activation of the search button 314.

At 408, the processor 102 may search the data structure 202 to determinewhether a shortcut search already exists for the current website. Forexample, the processor 102 may search the data structure 202 using a keyincluding the current domain name, the current directory path, and/orthe current query string. At 410, the processor 102 may determinewhether a shortcut search already exists for the current website in datastructure 202.

If the processor 102 determines that a shortcut to the current pageexists in the database, then at 412 the processor 102 may deactivate theInstasearch button 316, and set the color of the indicator 318, to, forexample, green. It will be obvious to one of skill in the art thateither deactivating button 316 or setting the color of the indicator 318would be sufficient to communicate the existence of the shortcut to thecurrent site. Furthermore, the indicator 318 is optional. In oneembodiment, the Instasearch button 316 is not deactivated. In anotherembodiment, the indicator 318 is set to some other color, for example,to account for the fact that many users may be red/green colorblind. Insuch an embodiment, the indicator may, for example, be set to black orwhite, rather than to red or green. After setting the color of theindicator 318 and/or deactivating the Instasearch button 316, theprocessor returns to 404 to wait until a new page is loaded.

If at 410 the processor 102 determines that a shortcut to the currentpage is not found in the database 202, then at 414 the processor 102 mayactivate the button 316 and set the indicator color to red to indicatethat no shortcut is in the database 202. As described above, theactivation and deactivation of the button 316 the setting of theindicator 318 may be handled differently in different embodiments.

At 418, the processor 102 determines whether the button 316 has beenactivated. For example, a time-out may be set so that, after thetime-out expires, it is presumed that the user will not activate thebutton 316, at which point the NO branch of the decision is executed. Ifthe button 316 is not activated, then at 404 the processor determineswhether a new page has been loaded into the browser window 302. If a newpage has been loaded into the browser 302, then the processor progressesto 406 to read the URI and source code of the new page. If at 418 theprocessor 102 determines that the button 316 has been activated, then at422 (FIG. 4B) the processor 102 determines whether the cursor 312 (shownin FIG. 3) is in the frame 310.

In one embodiment, if the processor determines at 422 that the cursor312 is not in the frame or form, then the processor 102 analyzes theHTML or other code of the current website at 424. After the processoranalyzes the code at 424, at 426 the processor 102 generates an HTTP GETmessage or an HTTP POST message, as indicated by the code. This messageis substantially the same as a message that would be generated bybrowser application 208 under the control of the web page source codeupon the activation of the search button 314. After the applicablemessage has been generated at 426, the processor 102 parses thegenerated message at 428. For example, the message may be parsed todetermine the location of search terms in the message. (The parsing ofthe message is described in more detail below.)

If at 422 the processor 102 determines that the cursor 312 was in theframe 310 at the time the Instasearch button 316 was selected, then at432 the processor 102 inserts placeholders into the frame 312. Forexample, the processor 102 may place into the frame 310 a stringcontaining place holders, such as, “@1 @2 @3 @4 . . . @N”. It will beappreciated by those of skill in the art that any type of placeholderswill suffice for the purposes of the claimed invention, and that thisstring of placeholders shown here is merely illustrative. Inserting anumber of placeholders in this fashion may facilitate the parsing of arequest message generated by the web page. At 434, the processor 102activates the search button 314. The activation of the search button 314causes the browser 302 to generate a request message (such as a GET or aPOST message, as described above). At 436, the processor 102 reads therequest message generated by the browser 302.

At 428, the processor 102 parses the HTTP message that was eithergenerated at 436 or 426. Because the processor 102 is able to generate asearch string with easily identifiable placeholders, as described above,it is relatively easy to parse the HTTP message and determine thelocation of the search terms within that message. For example, a messagegenerated using the search string “@1 @2 @3” by the search page of theGoogle website contains the following URL:“http://www.google.com/search?hl=en&lr=&q=@1+@2+@3”. For a furtherexample, a message generated by a search page of ESPN website containsthis URL: “http://search.espn.go.com/keyword/search?searchString=%401+%402+%403&Find.x=18&Find.y=13”. As can be seen, the ESPN sitesubstitutes “%40” for the “@” in the search string. Even so, becausethis is the standard ASCII hexadecimal representation for the “@”symbol, determining the location of the placeholders for the searchterms in the message is still relatively simple. For websites that use aPOST message, it will be a similarly simple task to parse the messageand determine the location of the search terms. Additionally, in oneillustrative embodiment, at 428 the processor 102 further formats theHTTP message to indicate the location of the search terms.

At 430, the processor 102 stores the request message along with a title,the directory path of the current search page of the website, and thelink. In one embodiment, at 430 the processor 102 generates a pop-upwindow 320 (shown in FIG. 3). The pop-up window 320 may allow the userto select, for example, a title to associate with the macro, andkeywords to associate with the macro. For example, the title 322 may begenerated by the processor 102, and/or entered or edited by the user.The keyword table 324 may include keywords that have been previouslyselected by the user, or keywords from some other source.

Additionally, in one illustrative embodiment, the pop-up window 320contains a frame (not shown) that contains the actual HTTP message,which may be edited by the user. This may be desirable, for example, forsites that have complex HTTP messages, or for advanced users who wish toedit the macros themselves for some other reason. Once the user hasoptionally selected keywords, and/or edited the title, the user mayselect the save button 326 to close the pop-up window 320. Theinformation regarding the macro (link) as stored in the database 202 isshown in more detail in FIG. 5. Once this information has been stored inthe database 202, the processor 102 may return to 402 and wait for a newweb page to be loaded.

An illustrative HTTP GET message is shown in Table 1, below. The GETmessage in Table 1 is a request for a Google™ search using the searchterms “@1 @2 @3”. An illustrative HTTP POST message is shown in Table 2.The GET message includes a path that indicates data to be passed to aserver-side program, the HTTP version (1.1), and the host(www.google.com).

TABLE 1 GET /search?hl=en&lr=&q=@1+@2+@3 HTTP/1.1     Host:www.Google.com

The POST message in Table 2 is a request for a search from thefictitious site searcharoo.com. The path to the server-side program is“/cgi-path/adv-search.cgi”. The HTTP version is 1.0. The data to pass tothe server side program is “query=@1&@2+@3”, where, illustratively,“query” indicates that the desired action is a query, the ampersandindicates a Boolean “and” operator, and the plus sign indicates aBoolean “or” operator. For example, in this query string the resourcewould search for documents containing either both of the first twosearch terms, or the third search term. The use of Boolean operators assearch parameters will be understood by those of skill in the art, aswill the fact that other types of operators may be used, such asspelling out the words of the operation, without departing from thescope of the claimed invention.

TABLE 2   POST /cgi-path/adv-search.cgi HTTP/1.0     From:anonymous@searcharoo.com       User-Agent: HTTPTool/1.0 Content-Type:application/x-www-form-urlencoded         Content-Length: 14         query=@1&@2+@3

Turning to FIG. 5, two illustrative data structures includinginformation regarding quick-search macros, user data, and the like areshown. A first data structure 202 may be stored on the client computer110. A second data structure 156 may be stored on the server computer120. The data structures 202 and 156 may be relational databases thatinclude related tables. For example, the data structure 202 may includea search macro table and a user data table. The search macro table mayinclude information for each search macro (link, shortcut), such as afully qualified domain name, a path, a string, a title, and key words,as these terms are described above. Additionally, the search macro tablemay include a public flag to indicate whether the user wishes to makethis macro available to others. The user data table may include a uniqueidentification (UID) for the user, and personal information about theuser.

The data structure 156 may include a private macro table, a public macrotable, and a user table. The user table may include information about anumber of users of the server 120. For example, for each user, the tablemay include a unique identification, personal information, andconfiguration options, among other things. The private macro table mayinclude, in addition to the information from the macro table,information for the user that (owns) a particular search macro.Additionally, the data structure 156 may include a public macro table.The public macro table may include, for each public macro, the uniqueidentification of the user who (owns) the macro, and the associatedprivate link.

This illustrative structure, by distributing data across a clientcomputer 110 and a server computer 120, provides advantages. First, auser may be able to access his or her stored search macros fromvirtually any computer. For example, when the user accesses the server120, the user may be able to download the toolbar application 210 to thecurrent client computer 110. Additionally, because the user's privatemacros are stored on the server computer 120, any client computer 110 towhich the user has access may be used as described herein. Additionally,because the server computer 120 stores a list of links for which usershave indicated that the macros are public, the user may use macros thathave been created by others, thereby saving the time that would berequired by the user to create his our her own private macro links.

Macro Retrieval Graphical User Interface

As shown in FIG. 6, the browser application 208 may generate a customsearch window 602 within the GUI 204 in order to provide the user witheasy access to the links (macros) stored in the data structure(s). Thiscustom search window 602 may be source code generated by the toolbarapplication. For example, whenever a new macro is stored at 440 of thealgorithm 400, the source code of an “instasearch.htm” page may beupdated in the data storage medium 108. It will be obvious to those ofskill in the art that a multitude of such search windows, and that othertypes of data may be stored to generate the search window, such as Java,Pearl, C, Visual C++, Visual Basic, or any other computer languagecapable of generating a GUI windows.

The browser window 602 may include a menu bar 604, a toolbar 306, anaddress frame 607, and a display area 608, similar to the window 302shown in FIG. 3 and discussed above. The display area 608 may includethe top-level widgets for a file menu, an edit menu, a view menu, andthe like. Those familiar with using windowing operating systems will befamiliar with the use of such a menu bar. The toolbar 606 may includewidgets that allow the user to move back to a previous web page, forwardto a next web page, to reload the current web page, and the like. Theaddress frame 607 may provide a location for the entry of a URL addressfor a website to which the user wishes to navigate. In one embodiment,the URL is the location of a file on the user's hard drive. In anotherembodiment, the URL is the location of a resource on the macro servercomputer 120 b. In yet another embodiment, the URL is the location of aresource on the web server computer 120 n.

The display area 608 may render the contents of the HTML or other sourcecode contained at the address specified by the URL in the address frame607. The illustrative search page includes a search frame 610 and one ormore macro search buttons 614. The search frame 610 provides a frameinto which a user may type a list comprising one or more search termsfor which the user desires to gain additional information. In operation,once the user enters the search terms into the search frame 610, theuser would activate one of the macro search buttons 614. For example,the user may activate the macro button 614 a, which in the disclosedillustrative embodiment is a macro to the Google® search page. Uponactivation of one of the macro search buttons 614, the associated macrois retrieved from the data structure, the search terms are substitutedfor the placeholders, and the resulting URL is transmitted onto thenetwork 130, as explained in greater detail below in reference to FIG.7.

Macro Retrieval Algorithm

Turning to FIG. 7, a flowchart for an illustrative algorithm to generatea search page containing search macros is shown. The processor 102enters the algorithm at 702. At 704, the processor 102 determineswhether a macro button has been selected. For example, the processordetermines whether one of the macro buttons 614 has been selected in thebrowser window 602 (FIG. 6). If no macro button 614 has been selected,then the processor waits at 704 until a macro button 614 is selected.Once a macro button is selected, then the processor 102 proceeds to 706and reads the search terms from the text frame 610 of the browser window602. At 708, the processor 102 retrieves the macro associated with theactivated macro button 614 from the data structure 202. For example, ifthe Google® macro button 614 a is selected, then the processor 102 wouldretrieve the macro for Google® from the data structure 602. For example,the processor 102 may retrieve the illustrative macro for Google® macroshown in Table 1.

At 710, the processor 102 substitutes the search terms from the textframe 610 for the placeholders in the retrieved macro. For example, ifthere are seven placeholders in the stored macro, and four search termsin the text frame 610, then the processor 102 would replace the firstfour placeholders with the four search terms, and discard the remainingthree placeholders. It will be apparent to one of skill in the art thatfor more complex macros configured to use Boolean or other operators,the search terms from text frame 610 would first be parsed by a parser,and that the parsed results would be further processed by a lexicalanalyzer to distinguish operators from search terms, as is well known inthe art.

After this substitution is completed at 710, the processor 102 at 712transmits the newly generated URL (which is a function of the retrievedmacro with the search terms substituted for the placeholders) via thenetwork interface 109 to the network 130. The network 130 is, in oneembodiment, accessed via an Internet service provider. However, as wouldbe understood by those of skill in the art, this system and method maybe used with a network that is not the Internet, in which case the URLwould be submitted to the associated web sever via a frame relay, adirect connection, or the like.

At 714, the processor 102 determines whether a results page was returnedfrom the network 130, contrasted with, for example, an error message orno response at all. If results were not returned, then at 716 theprocessor 102 generates an error message page (not shown) and proceedsto 720. If, on the other hand, at 714 the processor 102 determines thata results page was returned, then at 718 the processor displays theresults page in the graphical user interface. For example, in oneembodiment the results page may be displayed in a frame of the currentwindow. In another embodiment, the results page may be displayed in anew browser window. In an embodiment configured for tabbed browsers, theresults page may be displayed in a new tab of the current browserwindow. In yet another embodiment, the results page may overwrite thesearch macro page show in FIG. 6. Additionally, in one embodiment, theresults page is further processed and displayed in a frame or window ofa proprietary searching application. Once the results page is displayed,the processor exits the algorithm 700 at 720.

As depicted in FIG. 8, queries or search requests may originate fromuser computer systems 902 a through 902 n and are received over acommunication system 908 or from telephone handsets 904 a and 904 b. Asmentioned above, the user computer systems 902 a through 902 n may be atypical desktop or laptop system, a handheld computer such as a personaldigital assistant (PDA), a basic cellular telephone, a text-enabledcellular telephone, a specialized query terminal, or any other sourcethat allows a user to enter a query via text or speech entry. Thetelephone handsets can be typical touch-tone telephones, cellulartelephones, two-way radios or any other communication device that allowsthe user to talk over a distance. The communication system can includepacket switched facilities, such as the Internet, circuit switchedfacilities, such as the public switched telephone network, radio basedfacilities, such as a wireless network, etc.

The oral speech queries by telephone 904 a and 904 b may be stored in adatabase and converted into digital text queries by a speech translationsystem 910. The speech translation system 910 may handle the task oftranslating the speech into text, possibly by interaction with othersystems, or it may perform the task locally. It may perform speech totext conversion by using either speech transcription using humantranscribers or using conventional speech-to-text processing, also knownas automatic speech recognition (ASR).

The speech (voice) translation server 910 may keep track of the portfrom which the call originated and assign a user identifier to the user904 a and 904 b on this port for a particular session. The speechqueries can also originate from another source 912 called a “speechquery service requester” (SQSR) rather than directly from the user, suchas a private or public information provider. For example, a speech querycan be initially processed by a public library telephone system andswitched to the server 910. The speech query may physically arrive atthe system via a variety of input means, including time-divisionmultiplexed lines, voice over IP (VOIP) packets from an Internetconnection, and other sources. The speech query may arrive as a streamor packet or series of packets.

Similarly, a commercial site, such as a grocery store ordering systemwhere a user orders food and inquires about recipes for a specialafter-dinner dessert can initially process a speech query and pass italong to the speech translation server 910. Further, the SQSR 912 maycommunicate with the speech translation server 910 via a variety ofmechanisms including an IP-based socket address or via a Microsoft NETservice, making the translation services of 910 widely available via theInternet to any application that wishes to use them.

The packet may then be processed locally at the speech translationserver 910 to convert it from digitized speech into text or,alternatively, it may be processed by a remote system. If the digitizedspeech is being transcribed by human transcribers, this can beaccomplished by sending the digitized speech to one or more transcribersystems (TS) 916 and 918 where human transcribers can hear the speech,for example via headphones or speakers, and transcribe the informationby typing the text into their system, so that the text is then sent backto the speech translation server 910 (or alternatively, directly to thequery server 914 or to the SQSR 912).

The speech translation server 910 maintains a database of alltranscribers that are currently logged-in and available to perform theservice of transcription using a transcription software application ontheir transcription system 916 and 918. Alternatively, this function oftracking the availability of transcribers might be located on a remotesystem and/or might be implemented using a distributed mechanism amongtranscriber systems 916 and 918 (for example, using P2P mechanisms).

Queries from a graphical user interface (GUI) of the user computers 902a-902 n can originate directly from the user, or like the speechqueries, indirectly through a TQSR (Text Query Service Requestor) 906,which may be any software application or device connected via theInternet, for example As in the speech query, a user may be on a grocerystore web site ordering food for delivery and may inquire about a recipefor a special dessert. This recipe query would be forwarded to the queryserver 914. Any web site, consumer electronics device, or other devicemay become a TQSR or SQSR for performing a search. For example, a settop box offered by a satellite TV or Cable TV provider could offer theability to enter a query string and act as a TQSR or SQSR. Any softwareapplication running on a PC, such as Microsoft's Word or Excel, may alsoserve as a TQSR or SQSR.

Upon the receipt of a query, such as from user computer 902 in thisexample, the query server 914 may provide information (e.g.advertisements) to the user while the search is being processed. Thisinformation may relate to the query (or to the keywords of the query)and may include visual and audio information as appropriate for a sourceof the query. This information may include video, music, games, weblinks, etc. that will interact with and display for the user while thesearch is being performed.

The server 914 processes the arriving queries by determining whichsearchers are available to search for the information being requested,based upon factors such as the searcher being logged in, searchers whoare signed up for a keyword, or category, or the ranking of the searcherbased on previous performance. The server 914 may also determine if thisparticular query has been queried previously and send a response to theuser with previously obtained search results without necessarilyinvoking a human searcher.

When no previous query results satisfying or that may satisfy the queryare available, the server 914 may send the query to one or more of theavailable searchers over the communication system 908. If the query is aspeech query, in addition to sending the text version of the query andthe keywords, the speech recording of the query may be transmitted. Thehuman searchers may be located at computer-based searcher tool systems920 a and 920 b and/or speech-enabled computer-based searcher systems922 a and 922 b.

A server-chosen searcher (or searchers) reviews the query, including thekeywords and any speech recording and decides whether to accept thesearch. When the searcher accepts the search task, this acceptance maybe communicated back to the user who originated the query through theserver 914. In a situation where a searcher requires additionalinformation or clarification, the searcher may send a request foradditional information to the user, which may be sent through server 914or via direct link to the user via the communication system 908. Thesearcher then uses the searcher tool system 920 a through 922 b toperform a search of publicly or privately available information toproduce search results. For example, the searcher may use conventionaltools, such as a browser, to access public databases via searches overthe World Wide Web or private databases that may be accessible only tothe searcher, such as a database of information previously gathered bythe searcher, or from results stored on the query server 914 from othersearchers, or from databases that require payment for access or eveninformation available to the searcher in non-electronic form, such as abook on the searcher's bookshelf, test results from a personalexperiment, etc.

The searcher may also submit the search query, or some version of it toan automated search tool such as the Google or AskJeeves systems. Thesearch results, such as an answer, comments by the searcher, web pages,web links, and other query related information, etc. are gathered by thesearcher during the search. The results of the search, such as web pagesand links which the user can review or use to obtain the informationdesired, an answer to a question and web pages or links to web pagesthat support the answer, etc., is transmitted back to the user throughthe server 914 or directly to the user via the communications system908. The information returned is typically what the searcher thinks orintends can satisfy the need of the user. The information can includeanything that could satisfy the user, including a document, a video, asong, a configuration file, pictures, links, etc.

An exemplary process 800 for automating access to a resource isillustrated in FIG. 9. As shown in FIG. 9, process 800 begins bycapturing 802 information of a resource. For example, a URL string of awebsite such as WebMD, a sequence of operations executed to locate aresource (e.g., search engine, Internet directory, etc) is captured.Information identifying a resource path such as a URL may beautomatically captured 902 or manually input by typing, copying andpasting the resource path using the pop-up window 320 (FIG. 3).

Subsequent to capturing 802 information of the resource, process 800moves to modifying 804 the captured information. For example, the URL ofthe web site WebMD containing the keyword “diabetes” in the URL stringthat is accessed as a resource for obtaining data pertaining to“diabetes” may be replaced with “@@@.” Subsequently, if a search isdesired on the WebMD site, then the “@@@” may be replaced by anotherstring such as “breast cancer” and submitted to a browser, whereupon anew phrase is searched. As such, a portion of the information of theresource path (e.g., the URL) related to unique content in a request orquery for a search that has been encoded by a browser to access theresource is modified for subsequent use pertaining to the same orsimilar content.

After modifying 804 the captured information, process 800 moves toautomating 806 access to the resource using the modified information.For example, subsequent access to the web site WebMD for a searchpertaining to the keyword “diabetes” may be implemented using themodified information of the web site WebMD without requiring a user tore-execute the repetitive operations needed to access a specific portionof the web site containing the information with respect to the keyword“diabetes.”

Accordingly, a human searcher or user (information seeker) may utilizethe automated access to a particular resource to conduct a searchwithout having to manually navigate to the resource. For example, if auser conducted a search pertaining to a WebMD magazine publication usingYahoo.com and determines that WebMD.com is the best source forinformation pertaining to the magazine, the disclosed system and methodenable automated access to the specific portion of WebMD.com containingpertinent information.

The many features and advantages of the claimed invention are apparentfrom the detailed specification and, thus, it is intended by theappended claims to cover all such features and advantages of the claimedinvention that fall within the true spirit and scope of the invention.Further, since numerous modifications and changes will readily occur tothose skilled in the art, it is not desired to limit the invention tothe exact construction and operation illustrated and described for thedisclosed embodiments, and accordingly all suitable modifications andequivalents may be resorted to, falling within the scope of the claimedinvention.

1. A method of creating a search macro for use with a computer,comprising: loading a page into an application from a resource, wherethe resource has a Uniform Resource Identifier and the page has a searchfield that causes the application to generate a message when activated;reading the Uniform Resource Identifier with the application; insertinga placeholder into the search field; activating the search field;reading the message generated in response to the activation of thesearch field with the application; parsing the message to isolate asearch string containing the placeholder; and storing the search stringin a data structure.
 2. The method of claim 1, further comprisingparsing the message to isolate a Uniform Resource Identifier, storingthe Uniform Resource Identifier in the data structure, and associatingthe Uniform Resource Identifier with the search string.
 3. The method ofclaim 1, further comprising generating a window in a graphical userinterface that displays a portion of the message and a portion of theUniform Resource Identifier.
 4. The method of claim 3, whereingenerating a window in a graphical user interface further comprisesgenerating a window that displays at least one keyword, and readinginput from the graphical user interface to determine whether toassociate the at least one keyword with the Uniform Resource Identifierin the data structure.
 5. The method of claim 1, wherein loading a pageinto an application from a resource comprises loading the page into abrowser application.
 6. The method of claim 1, wherein loading a pageinto an application from a resource comprises loading the page into afirst application, and reading the Uniform Resource Identifier with theapplication comprises reading the Uniform Resource Identifier with asecond application.
 7. The method of claim 1, wherein loading a pageinto an application from a resource comprises loading the page into abrowser application, and reading the Uniform Resource Identifier withthe application comprises reading the Uniform Resource Identifier with atoolbar application.
 8. The method of claim 1, further comprisingsearching the data structure for the Uniform Resource Identifier, andsetting a state of a widget button based on a result of the search. 9.The method of claim 8, wherein setting the state of the widget buttoncomprises setting the widget button to active if the result of thesearch indicates that the Uniform Resource Identifier is not stored inthe data structure.
 10. A system, comprising; a user system incommunication with a network, wherein the user system comprises agraphical user interface; and a server in communication with thenetwork, wherein the server comprises an information database and codefor a web page to search the information database using at least onesearch term; wherein the user system includes an application that readsthe code for the web page, determines a message generated by the code inresponse to the at least one search term, substitutes at least oneplaceholder for the at least one search term, and stores the message asa macro in a data structure.
 11. An article of manufacture comprising: acomputer usable medium having computer readable program code meansembodied therein for causing a computer to assist a user submitting aquery to a human searcher, the computer readable program code means insaid article of manufacture comprising: computer readable program codemeans for causing a computer to load a page into an application from aresource, where the resource has a Uniform Resource Identifier and thepage has a search field that causes the application to generate amessage when activated; computer readable program code means for causingthe computer to read the Uniform Resource Identifier with theapplication;; computer readable program code means for causing thecomputer to insert a placeholder into the search field; computerreadable program code means for causing the computer to activate thesearch field; computer readable program code means for causing thecomputer to read the message generated in response to the activation ofthe search field with the application; computer readable program codemeans for causing the computer to parse the message to isolate a searchstring containing the placeholder; and computer readable program codemeans for causing the computer to store the search string in a datastructure.
 12. A method of creating a search macro for use with acomputer, comprising: loading a page into an application from aresource, where the resource has a Uniform Resource Identifier and thepage has a search field that causes the application to generate amessage when activated; reading the Uniform Resource Identifier with theapplication; reading the source code of the page with the application;analyzing the source code to determine the message generated when thesearch field is activated; generating the message as a function of thesource code and a placeholder; and storing the message in a datastructure as a macro.
 13. The method of claim 1, further comprisingstoring the Uniform Resource Identifier in the data structure, andassociating the Uniform Resource Identifier with the macro.
 14. Themethod of claim 1, further comprising generating a window in a graphicaluser interface that displays a portion of the macro and a portion of theUniform Resource Identifier.
 15. The method of claim 14, whereingenerating a window in a graphical user interface further comprisesgenerating a window that displays at least one keyword, and readinginput from the graphical user interface to determine whether toassociate the at least one keyword with the Uniform Resource Identifierin the data structure.
 16. The method of claim 12, wherein loading apage into an application from a resource comprises loading the page intoa browser application.
 17. The method of claim 12, wherein loading apage into an application from a resource comprises loading the page intoa first application, and reading the Uniform Resource Identifier withthe application comprises reading the Uniform Resource Identifier with asecond application.
 18. The method of claim 12, further comprisingsearching the data structure for the Uniform Resource Identifier, andsetting a state of a widget button based on a result of the search. 19.A method of generating a Uniform Resource Identifier as a function of asearch macro with a computer, comprising: displaying a page in anapplication, where the page has a search field; reading a macro from adata structure with the application; reading a search term from thesearch field; generating a Uniform Resource Identifier as a function ofthe macro and the search term with the application; transmitting theUniform Resource Identifier with the application; and retrieving aresult associated with the Uniform Resource Identifier from the networkwith the application.
 20. The method of claim 19, further comprisingdisplaying a second page in the application, wherein the second page isa function of the result associated with the Uniform ResourceIdentifier.
 21. A method, comprising: capturing information of sequenceof operations for locating a resource; modifying the capturedinformation; and automating access to the resource using the modifiedinformation.
 22. The method of claim 21, wherein the resource is a website and said modifying includes replacing a URL substring of the website with a string pertaining to a query.
 23. The method of claim 21,comprising: associating the resource with a keyword and enablingautomated access to the resource responsive to a search requestpertaining to the keyword.
 24. The method of claim 23, wherein automatedaccess to the resource is made available to multiple users.
 25. Themethod of claim 23, wherein a human searcher executes a searchresponsive to the search request and on behalf of a user submitting thesearch request.